import request from "../../../utils/request"
// 导入npm 订阅者
import PubSub from 'pubsub-js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    day: '', // 天
    month: '',// 月
    recommendList: [], // 推荐列表数据
    index: 0,// 点击音乐的下标
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    /** 判断用户是否登录
     * 1. 从本地存储内获取用户信息
     * 2. 如果用户信息为空,代表着用户没有登录,跳转登录页面
     * 3. 如果用户已登录，正常显示每日推荐的数据
     */
    let cookies = wx.getStorageSync('cookies');
    if (!cookies) {
      wx.showToast({
        title: '请先登录',
        icon: "none",
        success: () => {
          // 跳转登录页面
          wx.reLaunch({
            url: '/pages/login/login?distinguish=' + "recommendSong"
          })
        }
      })
    } else {
      // 获取每日推荐的数据
      this.getRecommendList()
    }
    // 更新日期的状态数据
    this.setData({
      day: new Date().getDate(), // 日
      month: new Date().getMonth() + 1, // 月
    })

    // 订阅来自songDetail页面发布的消息
    PubSub.subscribe('switchType', (msg, types) => {
      // type(区分上/下一首) indexS(区分播放顺序) onEnded(区分自然播放结束)
      let { type, indexS,onEnded } = types;
      // 推荐列表数据  当前点击播放歌曲的索引
      let { recommendList, index } = this.data;
      if (type === 'pre') { // 上一首
        // 如果当前歌曲是第一首，就跳转最后一首
        (index === 0) && (index = recommendList.length);
        if (indexS === 0) { // 顺序播放
          index -= 1;
        }else if (indexS === 1) { // 单曲循环
          !onEnded?index -= 1:'';
        } else if (indexS === 2){ // 随机播放
          // Math.random() 随机生成小数 0 ~ recommendList.length - 1 ？ 对小数取整 Math.floor(X) = X的整数位 不等于当前歌曲的索引
        let Next = Math.floor(Math.random()*recommendList.length - 1) !== index ?Math.floor(Math.random()*recommendList.length - 1):Math.floor(Math.random()*recommendList.length - 1);
        Next!==index?Next:Math.floor(Math.random()*recommendList.length - 1);
          // console.log("随机播放",Next);
          index = Next;
        }
      } else {// 下一首
        // 如果当前歌曲是最后首，就跳转第一首
        (index === recommendList.length - 1) && (index = -1);

        if (indexS === 0) {  // 顺序播放
          index += 1;
        } else if (indexS === 1) { // 单曲循环
          !onEnded?index += 1:'';
        } else if (indexS === 2){ // 随机播放
          // Math.random() 随机生成小数 0 ~ recommendList.length - 1 ？ 对小数取整 Math.floor(X) = X的整数位 不等于当前歌曲的索引
        let Next =Math.floor(Math.random()*recommendList.length - 1) !== index ?Math.floor(Math.random()*recommendList.length - 1):Math.floor(Math.random()*recommendList.length - 1);
        Next!==index?Next:Math.floor(Math.random()*recommendList.length - 1);
          console.log("随机播放",Next);
          index = Next;
        }
      }
      // 更新index的状态数据
      this.setData({
        index
      })

      // 获取上/下一首的歌曲Id
      let musicId = recommendList[index].id;
      // 将歌曲的Id回传给songDetail页面
      PubSub.publish('musicId', musicId)

    })
  },
  // 获取每日推荐的数据
  async getRecommendList() {
    // 获取每日推荐的数据
    let recommendListData = await request('/recommend/songs');
    console.log(recommendListData);
    // 更新 recommendList 的状态数据
    this.setData({
      recommendList: recommendListData.data.dailySongs
    })
  },

  // 点击跳转播放界面songDetail
  toSongDetail(event) {
    let { song, index } = event.currentTarget.dataset;
    // 更新index的状态数据
    this.setData({
      index
    })
    // 路由跳转传参: query 参数
    wx.navigateTo({
      // 路由传参对象或数组时要把要穿的参数转换成JOSN对象
      // 不能直接将song对象作为参数传递,长度过长会被自动截取掉
      // url:"/pages/songDetail/songDetail?song=" + JSON.stringify(song),
      url: "/songPackage/pages/songDetail/songDetail?musicId=" + song.id,
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})